#include"Teacher.h"
#include"Student.h"
#include<stdio.h>
#include<string.h>

void InitTeacher(Teach *t, int id, const char *name)
{
    t->id= id;
    strcpy(t->Name,name);
    t->size=0;
}

void AddStudent(Teach *t, int StuId, const char *Stuname)
{
    if(t->size>= 10)
    {
        printf("已经达到上限");
    }  
    t->s[t->size].id= StuId;
    strcpy(t->s[t->size].Name, Stuname);
    t->size++;
}

void RemoveByIndex(Teach *t, int index)
{
    if(index>t->size||index<0)
    {
        printf("非法位置的删除\n");
        return;
    }

    for(int i=index; i<t->size; i++)
    {
        t->s[i]=t->s[i+1];
    }
}

// void RemoveStudent(Teach *t, int StuId)
// {
//     for(int i=0; i<t->size; i++)
//     {
//         if(t->s[i].id== StuId)
//         {
//             RemoveByIndex(t,i);
//             t->size--;
//             i--;
//         }
//     }
// }

// void RemoveStuByName(Teach *t, const char *name)
// {
//     for(int i=0; i<t->size; i++)
//     {
//         if(strcmp(t->s[i].Name, name)==0)
//         {
//             RemoveByIndex(t,i);
//             t->size--;
//             i--;
//         }
//     }
// }

void RemoveStudent(Teach *t, void *data, bool(*IsEqual)(void *, void*))
{
    for(int i=0; i< t->size; i++)
    {
        if(IsEqual(&t->s[i], data))
        {
            RemoveByIndex(t,i);
            t->size--;
            i--;
        }
    }
}

Stu *FindStudent(Teach *t, void *data, bool(*IsEqual)(void *,void*))
{
    for(int i=0; i< t->size; i++)
    {
        if(IsEqual(&t->s[i],data))
        {
            return &t->s[i];
        }
    }
    return NULL;
}

void PrintTeach(Teach *t)
{
    printf("老师信息:\n");
    printf("%d %s\n",t->id,t->Name);

    printf("学生信息:\n");
    for(int i=0; i<t->size; i++)
    {
        PrintStu(t->s+i);
    }
}